// #include "rm_cilent_ui.h"

// // #include "referee.h"

// #include "stdlib.h"
// #include "stdio.h"
// #include "crc.h"


// #include "freertos.h"
// #include "task.h"
// #include "queue.h"
// #include "semphr.h"
// #include <string.h>

// unsigned char UI_Seq = 0; // 包序号

// extern UART_HandleTypeDef huart1;
// extern uint8_t robot_ID;

// /****************************************串口驱动映射************************************/
// void UI_SendByte(unsigned char ch)
// {
// 	HAL_UART_Transmit(&huart1,&ch,sizeof(unsigned char),1);
// }

// /********************************************删除操作*************************************
// **参数：Del_Operate  对应头文件删除操作
//         Del_Layer    要删除的层 取值0-9
// *****************************************************************************************/
// void UI_Delete(uint8_t Del_Operate, uint8_t Del_Layer)
// {
//     unsigned char *framepoint;   //读写指针
//     uint16_t frametail = 0xFFFF; //CRC16校验值
//     int loop_control;            //For函数循环控制

//     UI_Packhead framehead;
//     UI_Data_Operate datahead;
//     UI_Data_Delete del;

//     framepoint = (unsigned char *)&framehead;

//     framehead.SOF = UI_SOF;
//     framehead.Data_Length = 8;
//     framehead.Seq = UI_Seq;
//     framehead.CRC8 = Get_CRC8_Check_Sum(framepoint, 4, 0xFF);
//     framehead.CMD_ID = UI_CMD_Robo_Exchange; //填充包头数据

//     datahead.Data_ID = UI_Data_ID_Del;
//     datahead.Sender_ID = Robot_ID;
//     datahead.Receiver_ID = Cilent_ID; //填充操作数据

//     del.Delete_Operate = Del_Operate;
//     del.Layer = Del_Layer; //控制信息

//     frametail = Get_CRC16_Check_Sum(framepoint, sizeof(framehead), frametail);
//     framepoint = (unsigned char *)&datahead;
//     frametail = Get_CRC16_Check_Sum(framepoint, sizeof(datahead), frametail);
//     framepoint = (unsigned char *)&del;
//     frametail = Get_CRC16_Check_Sum(framepoint, sizeof(del), frametail); //CRC16校验值计算

//     framepoint = (unsigned char *)&framehead;

//     for (loop_control = 0; loop_control < sizeof(framehead); loop_control++)
//     {
//         UI_SendByte(*framepoint);
//         framepoint++;
//     }

//     framepoint = (unsigned char *)&datahead;

//     for (loop_control = 0; loop_control < sizeof(datahead); loop_control++)
//     {
//         UI_SendByte(*framepoint);
//         framepoint++;
//     }

//     framepoint = (unsigned char *)&del;

//     for (loop_control = 0; loop_control < sizeof(del); loop_control++)
//     {
//         UI_SendByte(*framepoint);
//         framepoint++;
//     } //发送所有帧

//     framepoint = (unsigned char *)&frametail;

//     for (loop_control = 0; loop_control < sizeof(frametail); loop_control++)
//     {
//         UI_SendByte(*framepoint);
//         framepoint++; //发送CRC16校验值
//     }
		
//     UI_Seq++; //包序号+1
// }
// /************************************************绘制直线*************************************************
// **参数：*image Graph_Data类型变量指针，用于存放图形数据
//         imagename[3]   图片名称，用于标识更改
//         Graph_Operate   图片操作，见头文件
//         Graph_Layer    图层0-9
//         Graph_Color    图形颜色
//         Graph_Width    图形线宽
//         Start_x、Start_x    开始坐标
//         End_x、End_y   结束坐标
// **********************************************************************************************************/
// void Line_Draw(
//     Graph_Data *image,
//     char imagename[3],
//     uint32_t Graph_Operate,
//     uint32_t Graph_Layer,
//     uint32_t Graph_Color,
//     uint32_t Graph_Width,
//     uint32_t Start_x,
//     uint32_t Start_y,
//     uint32_t End_x,
//     uint32_t End_y)
// {
//     int i;

//     for (i = 0; i < 3 && imagename[i] != '\0'; i++)
//         image->graphic_name[2 - i] = imagename[i];

//     image->operate_tpye = Graph_Operate;
//     image->layer = Graph_Layer;
//     image->color = Graph_Color;
//     image->width = Graph_Width;
//     image->start_x = Start_x;
//     image->start_y = Start_y;
//     image->end_x = End_x;
//     image->end_y = End_y;
// }

// /************************************************绘制矩形*************************************************
// **参数：*image Graph_Data类型变量指针，用于存放图形数据
//         imagename[3]   图片名称，用于标识更改
//         Graph_Operate   图片操作，见头文件
//         Graph_Layer    图层0-9
//         Graph_Color    图形颜色
//         Graph_Width    图形线宽
//         Start_x、Start_x    开始坐标
//         End_x、End_y   结束坐标（对顶角坐标）
// **********************************************************************************************************/
// void Rectangle_Draw(
//     Graph_Data *image,
//     char imagename[3],
//     uint32_t Graph_Operate,
//     uint32_t Graph_Layer,
//     uint32_t Graph_Color,
//     uint32_t Graph_Width,
//     uint32_t Start_x,
//     uint32_t Start_y,
//     uint32_t End_x,
//     uint32_t End_y)
// {
//     int i;

//     for (i = 0; i < 3 && imagename[i] != '\0'; i++)
//         image->graphic_name[2 - i] = imagename[i];

//     image->graphic_tpye = UI_Graph_Rectangle;
//     image->operate_tpye = Graph_Operate;
//     image->layer = Graph_Layer;
//     image->color = Graph_Color;
//     image->width = Graph_Width;
//     image->start_x = Start_x;
//     image->start_y = Start_y;
//     image->end_x = End_x;
//     image->end_y = End_y;
// }

// /************************************************绘制整圆*************************************************
// **参数：*image Graph_Data类型变量指针，用于存放图形数据
//         imagename[3]   图片名称，用于标识更改
//         Graph_Operate   图片操作，见头文件
//         Graph_Layer    图层0-9
//         Graph_Color    图形颜色
//         Graph_Width    图形线宽
//         Start_x、Start_x    圆心坐标
//         Graph_Radius  图形半径
// **********************************************************************************************************/
// void Circle_Draw(
//     Graph_Data *image,
//     char imagename[3],
//     uint32_t Graph_Operate,
//     uint32_t Graph_Layer,
//     uint32_t Graph_Color,
//     uint32_t Graph_Width,
//     uint32_t Start_x,
//     uint32_t Start_y,
//     uint32_t Graph_Radius)
// {
//     int i;

//     for (i = 0; i < 3 && imagename[i] != '\0'; i++)
//         image->graphic_name[2 - i] = imagename[i];

//     image->graphic_tpye = UI_Graph_Circle;
//     image->operate_tpye = Graph_Operate;
//     image->layer = Graph_Layer;
//     image->color = Graph_Color;
//     image->width = Graph_Width;
//     image->start_x = Start_x;
//     image->start_y = Start_y;
//     image->radius = Graph_Radius;
// }

// /************************************************绘制圆弧*************************************************
// **参数：*image Graph_Data类型变量指针，用于存放图形数据
//         imagename[3]   图片名称，用于标识更改
//         Graph_Operate   图片操作，见头文件
//         Graph_Layer    图层0-9
//         Graph_Color    图形颜色
//         Graph_Width    图形线宽
//         Graph_StartAngle,Graph_EndAngle    开始，终止角度
//         Start_y,Start_y    圆心坐标
//         x_Length,y_Length   x,y方向上轴长，参考椭圆
// **********************************************************************************************************/
// void Arc_Draw(
//     Graph_Data *image,
//     char imagename[3],
//     uint32_t Graph_Operate,
//     uint32_t Graph_Layer,
//     uint32_t Graph_Color,
//     uint32_t Graph_StartAngle,
//     uint32_t Graph_EndAngle,
//     uint32_t Graph_Width,
//     uint32_t Start_x,
//     uint32_t Start_y,
//     uint32_t x_Length,
//     uint32_t y_Length)
// {
//     int i;

//     for (i = 0; i < 3 && imagename[i] != '\0'; i++)
//         image->graphic_name[2 - i] = imagename[i];

//     image->graphic_tpye = UI_Graph_Arc;
//     image->operate_tpye = Graph_Operate;
//     image->layer = Graph_Layer;
//     image->color = Graph_Color;
//     image->width = Graph_Width;
//     image->start_x = Start_x;
//     image->start_y = Start_y;
//     image->start_angle = Graph_StartAngle;
//     image->end_angle = Graph_EndAngle;
//     image->end_x = x_Length;
//     image->end_y = y_Length;
// }

// /************************************************绘制浮点型数据*************************************************
// **参数：*image Graph_Data类型变量指针，用于存放图形数据
//         imagename[3]   图片名称，用于标识更改
//         Graph_Operate   图片操作，见头文件
//         Graph_Layer    图层0-9
//         Graph_Color    图形颜色
//         Graph_Size     字号
//         Graph_Width    图形线宽

//         Graph_Digit    小数位数
//         Start_x、Start_x    开始坐标
//         Graph_Float   要显示的变量
// **********************************************************************************************************/
// void Float_Draw(
//     Float_Data *image,
//     char imagename[3],
//     uint32_t Graph_Operate,
//     uint32_t Graph_Layer,
//     uint32_t Graph_Color,
//     uint32_t Graph_Size,
//     uint32_t Graph_Digit,
//     uint32_t Graph_Width,
//     uint32_t Start_x,
//     uint32_t Start_y,
//     float Graph_Float)
// {
//     int i;

//     for (i = 0; i < 3 && imagename[i] != '\0'; i++)
//         image->graphic_name[2 - i] = imagename[i];

//     image->graphic_tpye = UI_Graph_Float;
//     image->operate_tpye = Graph_Operate;
//     image->layer = Graph_Layer;
//     image->color = Graph_Color;
//     image->width = Graph_Width;
//     image->start_x = Start_x;
//     image->start_y = Start_y;
//     image->start_angle = Graph_Size;
//     image->end_angle = Graph_Digit;
//     image->graph_Float = Graph_Float;
// }

// /************************************************绘制字符型数据*************************************************
// **参数：*image Graph_Data类型变量指针，用于存放图形数据
//         imagename[3]   图片名称，用于标识更改
//         Graph_Operate   图片操作，见头文件
//         Graph_Layer    图层0-9
//         Graph_Color    图形颜色
//         Graph_Width    图形线宽
//         Graph_Size     字号
//         Start_x、Start_y    开始坐标
//         *Char_Data          待发送字符串开始地址
// **********************************************************************************************************/
// void Char_Draw(
//     String_Data *image,
//     char imagename[3],
//     uint32_t Graph_Operate,
//     uint32_t Graph_Layer,
//     uint32_t Graph_Color,
//     uint32_t Graph_Width,
//     uint32_t Graph_Size,
//     uint32_t Start_x,
//     uint32_t Start_y,
//     const char *Char_Data)
// {
//     int i;

//     for (i = 0; i < 3 && imagename[i] != '\0'; i++)
//         image->Graph_Control.graphic_name[2 - i] = imagename[i];

//     image->Graph_Control.graphic_tpye = UI_Graph_Char;
//     image->Graph_Control.operate_tpye = Graph_Operate;
//     image->Graph_Control.layer = Graph_Layer;
//     image->Graph_Control.color = Graph_Color;
//     image->Graph_Control.width = Graph_Width;
//     image->Graph_Control.start_x = Start_x;
//     image->Graph_Control.start_y = Start_y;
//     image->Graph_Control.start_angle = Graph_Size;
//     image->Graph_Control.end_angle = strlen(Char_Data);

//     strcpy(image->show_Data,Char_Data);
// }
// uint16_t fordebug;
// //只渲染一个图形(简化代码)
// void My_Graph_Refresh(Graph_Data *Graph)
// {
//     static uint8_t msg[ALL_GRAPH_LEN];
//     UI_Packhead framehead;
//     framehead.SOF = UI_SOF;
//     framehead.Data_Length = UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN;
//     framehead.Seq = UI_Seq;
//     framehead.CRC8 = Get_CRC8_Check_Sum((uint8_t *)&framehead, 4, 0xff);
//     framehead.CMD_ID = 0x0301;

//     UI_Data_Operate data_operate;
//     data_operate.Data_ID = UI_Data_ID_Draw1;
//     data_operate.Sender_ID = robot_ID ;
//     fordebug = robot_ID;
//     if (data_operate.Sender_ID == UI_Data_RobotID_BStandard1) //根据机器人ID选择发送
//         data_operate.Receiver_ID = UI_Data_CilentID_BStandard1;
//     else if (data_operate.Sender_ID == UI_Data_RobotID_BAerial)
//         data_operate.Receiver_ID = UI_Data_CilentID_BAerial;
//     else if (data_operate.Sender_ID == UI_Data_RobotID_RAerial) //这里把步兵全删了
//         data_operate.Receiver_ID = UI_Data_CilentID_RAerial;

//     memcpy(msg, &framehead, FRAMEHEAD_LEN);
//     memcpy(msg + FRAMEHEAD_LEN, &data_operate, UI_DATA_OPERATE_LEN);
//     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN, Graph, GRAPH_DATA_LEN);

//     Append_CRC16_Check_Sum(msg, ALL_GRAPH_LEN);
//   	HAL_UART_Transmit_DMA(&huart1,msg,ALL_GRAPH_LEN);
// //  	uart4_dma_send(msg, ALL_GRAPH_LEN); 这里用发送api
//     //DMA_printf(DMA1_Stream4, UART4, msg, ALL_GRAPH_LEN);
//     UI_Seq++;
//     vTaskDelay(10);
// }
// //只渲染一个字符串
// void My_Char_Refresh(String_Data string)
// {
//     static uint8_t msg[ALL_STRING_LEN];
//     UI_Packhead framehead;
//     framehead.SOF = UI_SOF;
//     framehead.Data_Length = UI_DATA_OPERATE_LEN + STRING_DATA_LEN;
//     framehead.Seq = UI_Seq;
//     framehead.CRC8 = Get_CRC8_Check_Sum((uint8_t *)&framehead, 4, 0xff);
//     framehead.CMD_ID = 0x0301;

//     UI_Data_Operate data_operate;
//     data_operate.Data_ID = UI_Data_ID_DrawChar;
//     data_operate.Sender_ID = robot_ID ;
//         data_operate.Receiver_ID = UI_Data_CilentID_RStandard3;
//     if (data_operate.Sender_ID == UI_Data_RobotID_BStandard1) //根据机器人ID选择发送
//         data_operate.Receiver_ID = UI_Data_CilentID_BStandard1;
//     else if (data_operate.Sender_ID == UI_Data_RobotID_RAerial)
//         data_operate.Receiver_ID = UI_Data_CilentID_RAerial;
//     else if (data_operate.Sender_ID == UI_Data_RobotID_BAerial)
//         data_operate.Receiver_ID = UI_Data_CilentID_BAerial;
//     else if (data_operate.Sender_ID == UI_Data_RobotID_RStandard1)
//         data_operate.Receiver_ID = UI_Data_CilentID_RStandard1;
// 	else if (data_operate.Sender_ID == UI_Data_RobotID_BStandard2)
//         data_operate.Receiver_ID = UI_Data_CilentID_BStandard2;
// 	else if (data_operate.Sender_ID == UI_Data_RobotID_RStandard2)
//         data_operate.Receiver_ID = UI_Data_CilentID_RStandard2;
// 	else if (data_operate.Sender_ID == UI_Data_RobotID_BStandard3)
//         data_operate.Receiver_ID = UI_Data_CilentID_BStandard3;
// 	else if (data_operate.Sender_ID == UI_Data_RobotID_RStandard3)
//         data_operate.Receiver_ID = UI_Data_CilentID_RStandard3;
 
//     string.Graph_Control.end_angle = strlen(string.show_Data);
// 	memset(string.show_Data + string.Graph_Control.end_angle, 0, sizeof(string.show_Data) - string.Graph_Control.end_angle);
//     memcpy(msg, &framehead, FRAMEHEAD_LEN);
//     memcpy(msg + FRAMEHEAD_LEN, &data_operate, UI_DATA_OPERATE_LEN);
//     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN, &string, STRING_DATA_LEN);

//     Append_CRC16_Check_Sum(msg, ALL_STRING_LEN);
//     HAL_UART_Transmit_DMA(&huart1,msg,ALL_STRING_LEN);
// //	uart4_dma_send(msg, ALL_STRING_LEN);这里用发送api
//     UI_Seq++;
    
// }

// // /*画七个图形*/
// // void My_Graph_Refresh_seven(Graph_Data *Graph_1,
// //                             Graph_Data *Graph_2,
// //                             Graph_Data *Graph_3,
// //                             Graph_Data *Graph_4,
// //                             Graph_Data *Graph_5,
// //                             Graph_Data *Graph_6,
// //                             Graph_Data *Graph_7)
// // {
// //     static uint8_t msg[ALL_SEVEN_GRAPH_LEN];
// //     UI_Packhead framehead;
// //     framehead.SOF = UI_SOF;
// //     framehead.Data_Length = UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 7;
// //     framehead.Seq = UI_Seq;
// //     framehead.CRC8 = Get_CRC8_Check_Sum((uint8_t *)&framehead, 4, 0xff);
// //     framehead.CMD_ID = 0x0301;

// //     UI_Data_Operate data_operate;
// //     data_operate.Data_ID = UI_Data_ID_Draw7; // 子ID0x104，画七个图形
// //     data_operate.Sender_ID = robot_ID;
// //     if (data_operate.Sender_ID == UI_Data_RobotID_BStandard1) // 根据机器人ID选择发送
// //         data_operate.Receiver_ID = UI_Data_CilentID_BStandard1;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_RStandard1)
// //         data_operate.Receiver_ID = UI_Data_CilentID_RStandard1;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_BStandard2)
// //         data_operate.Receiver_ID = UI_Data_CilentID_BStandard2;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_RStandard2)
// //         data_operate.Receiver_ID = UI_Data_CilentID_RStandard2;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_BStandard3)
// //         data_operate.Receiver_ID = UI_Data_CilentID_BStandard3;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_RStandard3)
// //         data_operate.Receiver_ID = UI_Data_CilentID_RStandard3;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_RHero)
// //         data_operate.Receiver_ID = UI_Data_CilentID_RHero;
// //     else if (data_operate.Sender_ID == UI_Data_RobotID_BHero)
// //         data_operate.Receiver_ID = UI_Data_CilentID_BHero;

// //     memcpy(msg, &framehead, FRAMEHEAD_LEN);                          // frame  +   cmd_id
// //     memcpy(msg + FRAMEHEAD_LEN, &data_operate, UI_DATA_OPERATE_LEN); // 子内容ID+发送者ID+接收者ID
// //     // 内容数据段
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 0, Graph_1, GRAPH_DATA_LEN); // 图形1
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 1, Graph_2, GRAPH_DATA_LEN); // 图形2
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 2, Graph_3, GRAPH_DATA_LEN); // 图形3
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 3, Graph_4, GRAPH_DATA_LEN); // 图形4
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 4, Graph_5, GRAPH_DATA_LEN); // 图形5
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 5, Graph_6, GRAPH_DATA_LEN); // 图形6
// //     memcpy(msg + FRAMEHEAD_LEN + UI_DATA_OPERATE_LEN + GRAPH_DATA_LEN * 6, Graph_7, GRAPH_DATA_LEN); // 图形7

// //     Append_CRC16_Check_Sum(msg, ALL_SEVEN_GRAPH_LEN);
// //     HAL_UART_Transmit_DMA(&huart1, msg, ALL_SEVEN_GRAPH_LEN);
// //     UI_Seq++;
// //     vTaskDelay(10);
// // }
// /***常量声明***/

// // 绘圆坐标相关//圆心OFFSET
// // const uint32_t CIRCLE_X0 = 700;
// // const uint32_t CIRCLE_Y0 = 100;
// // const uint32_t CIRCLE_R0 = 80;
// // const uint8_t THETA = 40;

// // // 常规参数
// // const uint16_t MAX_X = 1920;
// // const uint16_t MAX_Y = 1080;
// // const uint8_t CHAR_SIZE = 30;
// // const uint8_t CHAR_WIDE = 3;
// // const uint16_t OFFSET_X = 24;
// // const uint16_t OFFSET_Y = +30;
// // const uint16_t OFFSET_X_MODE = 1;
// // const uint16_t OFFSET_Y_MODE = -146;
// // String_Data GIAMBL_str; // pitch补偿

// // String_Data FIRE_str, fire_state_set;
// // String_Data fric_state, fric_state_set;
// // String_Data auto_aim_, auto_aim_set;

// // String_Data RPM_str;
// // static Float_Data RPM_SPEED;

// // String_Data FIRE_HZ, fire_hz_state_set;
// // const static char *fire_hz_state[2] = {
// //     "LOW !", //
// //     "HIGH !",  //
// // };
// // // static Graph_Data UI_shoot_line[10]; // 射击准线
// // // static Graph_Data UI_Energy[3];      // 电容能量条
// // // static String_Data UI_State_sta[6];  // 机器人状态,静态只需画一次
// // // static String_Data UI_State_dyn[6];  // 机器人状态,动态先add才能change
// // // pitch补偿角显示
// // String_Data p_comp;
// // Float_Data PCOMP_VAL;
// // // 0开1关
// // const static char *ON_OFF_STATE[2] = {
// //     "OFF !", // 关闭摩擦轮
// //     "ON !", // 打开摩擦轮
// // };
// // // 制裁吊射英雄
// // Graph_Data Sniper_Line;  // 门口打
// // Graph_Data Sniper_Line2; // 得分点打
// // Graph_Data AimLine_Horizon[4];
// // Graph_Data AimLine_Vertical[2];
// //  char *aimline_str[6] = {"152", "153", "154", "155", "156", "157"};

// // /**
// //  * @brief      摩擦轮转速
// //  */
// // static void print_fric_speed(void)
// // {
// //     RPM_SPEED.graph_Float = (int)(ROBOT_CMD_N::get_shoot_data()->firction_compansate + 6050) * 1000;
// //     RPM_SPEED.operate_tpye = UI_Graph_Change;
// //     My_Graph_Refresh((Graph_Data *)&RPM_SPEED);
// //     vTaskDelay(10);
// // }
// // /**
// //  * @brief      PITCH补偿角度调整
// //  */
// // static void print_pitch_comp(void)
// // {
// //     PCOMP_VAL.graph_Float = (int)(change_pitch_compansate(0)*1000);
// //     PCOMP_VAL.operate_tpye = UI_Graph_Change;
// //     My_Graph_Refresh((Graph_Data *)&PCOMP_VAL);
// //     vTaskDelay(10);
// // }
// // /**
// //  * @brief          绘制瞄准辅助线
// //  * @param[in]      none
// //  * @retval         none
// //  */
// // static void print_AimLine(void)
// // {
// //     static uint8_t aim_cnt = 0;
// //     Line_Draw(&Sniper_Line, "216", UI_Graph_Change, 6, UI_Color_White, 2, 1090, 395, 830, 395);
// //     Line_Draw(&AimLine_Horizon[aim_cnt], aimline_str[aim_cnt], UI_Graph_Change, 6, UI_Color_White, 1, 1920 / 2 - (aim_cnt + 1) * 20, 420 + aim_cnt * 25, 1920 / 2 + (aim_cnt + 1) * 20, 420 + aim_cnt * 25);
// //     Line_Draw(&AimLine_Vertical[(aim_cnt % 2)], aimline_str[4 + aim_cnt % 2], UI_Graph_Change, 6, UI_Color_White, 1, 1920 / 2 + 4 + (aim_cnt % 2) * 20, 260, 1920 / 2 + 4 + (aim_cnt % 2) * 20, 520);
// //     My_Graph_Refresh(&Sniper_Line);
// //     My_Graph_Refresh(&AimLine_Horizon[aim_cnt]);
// //     My_Graph_Refresh(&AimLine_Vertical[aim_cnt]);
// //     if (++aim_cnt > 3)
// //         aim_cnt = 0;
// //     vTaskDelay(1);
// // }
// // static void state_refresh(void)
// // {
// //     static gimbal_control_t *Gimbal_cmd = ROBOT_CMD_N::get_gimbal_data();
// //     static shoot_mood_t *shoot_cmd = ROBOT_CMD_N::get_shoot_data();
// //     Char_Draw(&fric_state_set, "RE", UI_Graph_Change, 2, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 1002, 695, ON_OFF_STATE[shoot_cmd->friction_mode]);
// //     My_Char_Refresh(fric_state_set);
// //     vTaskDelay(10);
// //     Char_Draw(&fire_hz_state_set, "HZ", UI_Graph_Change, 2, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 366, 620, fire_hz_state[shoot_cmd->fire_hz]);
// //     My_Char_Refresh(fire_hz_state_set);
// //     vTaskDelay(10);
// //     Char_Draw(&auto_aim_set, "AU", UI_Graph_Change, 2, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 991, 260, ON_OFF_STATE[Gimbal_cmd->vision_is_on]);
// //     My_Char_Refresh(auto_aim_set);
// //     vTaskDelay(10);
// // }

// // void UI_Init(void)
// // {
// //     static gimbal_control_t *Gimbal_cmd = ROBOT_CMD_N::get_gimbal_data();
// //     static shoot_mood_t *shoot_cmd = ROBOT_CMD_N::get_shoot_data();
// //     // Char_Draw(&fric_state, "122", UI_Graph_ADD, 3, UI_Color_Green, CHAR_WIDE, CHAR_SIZE, 210 + OFFSET_X_MODE, 850 + OFFSET_Y_MODE, "FRIC:");
// //     // Char_Draw(&fric_state_set, "144", UI_Graph_ADD, 4, UI_Color_Main, CHAR_WIDE, CHAR_SIZE, 320 + OFFSET_X_MODE, 850 + OFFSET_Y_MODE, fire_state[shoot_cmd->friction_mode]);
// //     Char_Draw(&fric_state, "FI", UI_Graph_ADD, 7, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 808, 695, "FRIC:");
// //     My_Char_Refresh(fric_state);
// //     vTaskDelay(10);
// //     Char_Draw(&fric_state_set, "RE", UI_Graph_ADD, 2, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 1002, 695, ON_OFF_STATE[shoot_cmd->friction_mode]);
// //     My_Char_Refresh(fric_state_set);
// //     vTaskDelay(10);

// //     Char_Draw(&p_comp, "PIC", UI_Graph_ADD, 7, UI_Color_Main, CHAR_WIDE, CHAR_SIZE, 130, 815, "PITCH:");
// //     My_Char_Refresh(p_comp);
// //     vTaskDelay(10);

// //     Float_Draw(&PCOMP_VAL, "COMP", UI_Graph_ADD, 6, UI_Color_Yellow, CHAR_SIZE, 2, CHAR_WIDE, 366, 815, change_pitch_compansate(0) * 1000);
// //     My_Graph_Refresh((Graph_Data *)&PCOMP_VAL);

// //     vTaskDelay(10);
// //     Char_Draw(&RPM_str, "RPM", UI_Graph_ADD, 7, UI_Color_Main, CHAR_WIDE, CHAR_SIZE, 130, 725, "RPM:");
// //     My_Char_Refresh(RPM_str);
// //     vTaskDelay(10);
// //     Float_Draw(&RPM_SPEED, "SET", UI_Graph_ADD, 6, UI_Color_Yellow, CHAR_SIZE, 2, CHAR_WIDE, 366, 725, (6050 + (int)shoot_cmd->firction_compansate) * 1000); // 速度补偿
// //     My_Graph_Refresh((Graph_Data *)&RPM_SPEED);
// //     Char_Draw(&FIRE_HZ, "FI", UI_Graph_ADD, 2, UI_Color_Main, CHAR_WIDE, CHAR_SIZE, 130, 620, "FIRE_HZ:");
// //     My_Char_Refresh(FIRE_HZ);
// //     vTaskDelay(10);
// //     Char_Draw(&fire_hz_state_set, "HZ", UI_Graph_ADD, 2, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 366, 620, fire_hz_state[shoot_cmd->fire_hz]);
// //     My_Char_Refresh(fire_hz_state_set);
// //     vTaskDelay(10);
// //     Char_Draw(&auto_aim_, "AUTO", UI_Graph_ADD, 7, UI_Color_Main, CHAR_WIDE, CHAR_SIZE, 797, 260, "AUTO:");
// //     My_Char_Refresh(auto_aim_);
// //     vTaskDelay(10);

// //     Char_Draw(&auto_aim_set, "AU", UI_Graph_ADD, 2, UI_Color_Yellow, CHAR_WIDE, CHAR_SIZE, 991, 260, ON_OFF_STATE[Gimbal_cmd->vision_is_on]);
// //     My_Char_Refresh(auto_aim_set);
// //     vTaskDelay(10);

// //     // print_AimLine();
// // }